package cn.hengzhu.main_manager.repository.dao;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.hengzhu.main_manager.repository.domain.ManageCaseBox;
import cn.hengzhu.main_manager.repository.domain.ManageCaseBoxExample;
import cn.hengzhu.main_manager.repository.vo.BoxAllInfoVO;
import cn.hengzhu.main_manager.repository.vo.CaseByDoorPutReidsVO;
import cn.hengzhu.main_manager.repository.vo.GoodsPriceVO;

public interface ManageCaseBoxMapper {
	/**
	 *
	 * @mbg.generated
	 */
	long countByExample(ManageCaseBoxExample example);

	/**
	 *
	 * @mbg.generated
	 */
	int deleteByExample(ManageCaseBoxExample example);

	/**
	 *
	 * @mbg.generated
	 */
	int deleteByPrimaryKey(Integer id);

	/**
	 *
	 * @mbg.generated
	 */
	int insert(ManageCaseBox record);

	/**
	 *
	 * @mbg.generated
	 */
	int insertSelective(ManageCaseBox record);

	/**
	 *
	 * @mbg.generated
	 */
	List<ManageCaseBox> selectByExample(ManageCaseBoxExample example);

	/**
	 *
	 * @mbg.generated
	 */
	ManageCaseBox selectByPrimaryKey(Integer id);

	/**
	 *
	 * @mbg.generated
	 */
	int updateByExampleSelective(@Param("record") ManageCaseBox record, @Param("example") ManageCaseBoxExample example);

	/**
	 *
	 * @mbg.generated
	 */
	int updateByExample(@Param("record") ManageCaseBox record, @Param("example") ManageCaseBoxExample example);

	/**
	 *
	 * @mbg.generated
	 */
	int updateByPrimaryKeySelective(ManageCaseBox record);

	/**
	 *
	 * @mbg.generated
	 */
	int updateByPrimaryKey(ManageCaseBox record);

	/**
	 * @author 刘成
	 * @since 2018年7月27日
	 * @param time
	 * @return 获取储物超时列表
	 */
	List<ManageCaseBox> getTimeOutUser(@Param("time") Date time, @Param("dateStr") String dateStr);

	void updateList(List<ManageCaseBox> updateCaseBoxList);

	int selectByOpenIdAndUseType(@Param("openId") String openId, @Param("useType") Byte useType);

	/**
	 * @author 周磊
	 * @since 2018年10月25日
	 * @param list
	 * @return
	 */
	Integer updatePrices(@Param("list") List<GoodsPriceVO> list);

	/**
	 * @author liuCheng
	 * @since 2019年1月21日 上午11:00:28
	 * @return 随机获取一个柜子
	 * 
	 */
	ManageCaseBox getRandomDoorNum(String caseNo);
	
	/**
	 * @author 
	 * @since 2019年10月28日 上午11:00:28
	 * @return 储物柜信息
	 * 
	 */
	List<BoxAllInfoVO> selectAllBoxInfoByCaseNo(@Param("caseNo") String caseNo);
	
	/**
	 * @author 
	 * @since 2019年11月22日 
	 * @return 随机获取doorNum最大的储物柜
	 * 
	 */
	ManageCaseBox getMaxDoorNum(String caseNo);
	
	/**
	 *2019年11月22日 
	 *@return 降序排序时间查询最新一条记录（恢复最新的一条数据，储物柜）
	 * @mbg.generated
	 */
	ManageCaseBox selectOneByExample(ManageCaseBoxExample example);
	
	/**
	 * @author
	 * @since 2019年11月23日
	 * @param list
	 * @return
	 */
	List<ManageCaseBox> selectInBoxId(@Param("list") List<Integer> list);
	/**
	 * 查询所有box配置（是否在线，是否锁门）
	 * @return
	 */
	List<CaseByDoorPutReidsVO> getBoxConnAndLockedAll();
}